home *** CD-ROM | disk | FTP | other *** search
/ STraTOS 1997 April & May / STraTOS 1 - 1997 April & May.iso / CD01 / INTERNET / SITES / LITTLE / TOOLKIT.ZIP / TOOLS / HALFBLIT / HALFBLIT.S < prev   
Encoding:
Text File  |  1997-01-26  |  4.2 KB  |  179 lines

  1. *---------------------------------------------------------------*
  2. *    Assember options                    *
  3. *---------------------------------------------------------------*
  4.  
  5.     OPT        O+,W-
  6.     COMMENT        HEAD=7
  7.  
  8. ;enable_hb
  9.     
  10.     ifd        enable_hb
  11.     output        halfblit.prg
  12.     elseif
  13.     output        fullblit.prg
  14.     endc
  15.     
  16. *---------------------------------------------------------------*
  17. *    Equates                            *
  18. *---------------------------------------------------------------*
  19.  
  20. dc4            =    $80000000
  21. ic4            =    $00008000
  22.  
  23. cookie_jar        =    $5a0
  24.  
  25. *---------------------------------------------------------------*
  26.  
  27. push    macro
  28.     move.\0        \1,-(sp)
  29.     endm
  30.     
  31. pop    macro
  32.     move.\0        (sp)+,\1
  33.     endm
  34.  
  35. pushall    macro
  36.     movem.l        d0-d7/a0-a6,-(sp)
  37.     endm
  38.     
  39. popall    macro
  40.     movem.l        (sp)+,d0-d7/a0-a6
  41.     endm
  42.  
  43. fcache    macro        * flush cache(s) [type]
  44.     nop
  45.     cpusha        \1
  46.     nop
  47.     endm
  48.  
  49. icache    macro        * invalidate cache(s) [type]
  50.     nop
  51.     cinva        \1
  52.     nop
  53.     endm
  54.  
  55. ecache    macro        * flush & edit cache(s) [type], [reg]
  56.     fcache        \1
  57.     movec        \2,cacr
  58.     endm
  59.  
  60. *---------------------------------------------------------------*
  61. *    Program start                        *
  62. *---------------------------------------------------------------*
  63. start:
  64. *---------------------------------------------------------------*
  65.     lea        usp_stack,sp
  66. *---------------------------------------------------------------*
  67. *    Enter supervisor mode                    *
  68. *---------------------------------------------------------------*
  69.     pea        ssp_stack
  70.     push.w        #32
  71.     trap        #1
  72.     move.l        d0,os_stack
  73. *---------------------------------------------------------------*
  74. *    Sign-on message                        *
  75. *---------------------------------------------------------------*
  76.     lea        sign_on,a0
  77.     bsr        cconws
  78. *---------------------------------------------------------------*
  79. *    Install driver                        *
  80. *---------------------------------------------------------------*
  81.     bsr        install
  82. *---------------------------------------------------------------*
  83. exit_program:
  84. *---------------------------------------------------------------*
  85. *    User mode                        *
  86. *---------------------------------------------------------------*
  87.     push.l        os_stack
  88.     push.w        #32
  89.     trap        #1
  90. *---------------------------------------------------------------*
  91. *    Terminate                        *
  92. *---------------------------------------------------------------*
  93.     clr.w        -(sp)
  94.     trap        #1
  95.  
  96. *---------------------------------------------------------------*
  97. install:
  98. *---------------------------------------------------------------*
  99. *    Change cache values here                *
  100. *---------------------------------------------------------------*
  101.     ifd        enable_hb
  102.     bclr        #2,$FFFF8007.w
  103.     elseif
  104.     bset        #2,$FFFF8007.w
  105.     endc
  106.     rts
  107.  
  108. *---------------------------------------------------------------*
  109. cookie_search:
  110. *---------------------------------------------------------------*
  111.     move.l        cookie_jar.w,a0
  112. .loop:    cmp.l        (a0),d0
  113.     beq.s        .find
  114.     tst.l        (a0)
  115.     beq.s        .fail
  116.     addq.l        #8,a0
  117.     bra.s        .loop
  118. .find:    moveq        #0,d0
  119.     bra.s        .end
  120. .fail:    moveq        #-1,d0
  121. .end:    rts
  122.  
  123. *---------------------------------------------------------------*
  124. delay:
  125. *---------------------------------------------------------------*
  126.     mulu.w        #50,d0
  127. .wt:    push.w        d0
  128.     push.w        #37
  129.     trap        #14
  130.     addq.l        #2,sp
  131.     pop.w        d0
  132.     dbra        d0,.wt
  133.     rts
  134.  
  135. *---------------------------------------------------------------*
  136. cconws:
  137. *---------------------------------------------------------------*
  138.     pea        (a0)
  139.     push.w        #9
  140.     trap        #1        ; cconws
  141.     addq.l        #6,sp
  142.     rts
  143.  
  144. *---------------------------------------------------------------*
  145.             data
  146. *---------------------------------------------------------------*
  147.  
  148. sign_on:        dc.b    13,10
  149.             dc.b    27,'p'
  150.             ifd    enable_hb
  151.             dc.b    ' Blitter switched to HALF speed! ',13,10
  152.             elseif
  153.             dc.b    ' Blitter switched to FULL speed! ',13,10
  154.             endc
  155.             dc.b    27,'q'
  156.             dc.b    0
  157.  
  158. missing:        dc.b    27,'E'
  159.             dc.b    'MC68040 driver is not installed!',13,10
  160.             dc.b    0
  161.             even
  162.         
  163. *---------------------------------------------------------------*
  164.             bss
  165. *---------------------------------------------------------------*
  166.  
  167. exit_code:        ds.l    1
  168.  
  169. *---------------------------------------------------------------*
  170.  
  171. os_stack:        ds.l    1
  172.  
  173.             ds.b    2048
  174. ssp_stack:        ds.l    1
  175.             ds.b    2048
  176. usp_stack:        ds.l    1
  177.  
  178. *---------------------------------------------------------------*
  179.